29. 模糊测试 tcpdump

获取tcpdump和libpcap的源代码。

git clone https://github.com/the-tcpdump-group/tcpdump.git
cd tcpdump
git clone https://github.com/the-tcpdump-group/libpcap.git
cd libpcap

使用AFL编译它

CC=afl-gcc CFLAGS="-g -fsanitize=address -fno-omit-frame-pointer" LDFLAGS="-g -fsanitize=address -fno-omit-frame-pointer" ./configure
sudo make && make install

它将诉说缺少一些依赖性,运行以下命令:

sudo apt install flex bison

你的编译应该是成功的。

如何获得测试语料库?

如何最大限度地减少它?

使用 afl-cmin,运行以下命令。

afl-cmin i tests o mincorpus m none -- ./tcpdump vv ee nnr @@

你应该看到一个类似下面的截图:


让我们模糊测试它

afl-fuzz i mincorpus o fuzzoutput m none -- ./tcpdump vv ee nnr @@

你应该看到这样的情况: